hhkb
컴퓨터과학

어셈블리_11_데이터 변환 알고리즘 분석 패턴

작성자 : Heehyeon Yoo|2025-10-25
# Assembly# XOR# Algorithm# Pattern

보안 프로그램이나 악성코드는 중요 데이터를 평문으로 저장하지 않는다. 데이터를 숨기거나 난독화하기 위해 다양한 암호화 기법을 사용하는데, 리버스 엔지니어링 입문 단계에서 가장 자주 마주치는 것이 XOR(Exclusive OR) 암호화다.

1. XOR의 특성

XOR 연산은 다음과 같은 수학적 성질을 가진다.

$$
(A \oplus B) \oplus B = A
$$

값 $A$에 키 $B$를 XOR 하여 암호화한 뒤, 다시 $B$를 XOR 하면 원본 $A$가 복원된다. 즉, 암호화와 복호화 로직이 동일하다. 구현이 매우 간단하고 연산 속도가 빨라 가벼운 암호화에 널리 사용된다.

2. 분석 패턴

디컴파일된 코드에서 다음과 같은 패턴이 발견된다면 데이터 변환 로직일 가능성이 매우 높다.

  1. 반복문(Loop): 배열이나 버퍼를 순회한다.
  2. 매직 넘버(Magic Number): 0x5A, 0xFF 등 특정 상수가 등장한다.
  3. XOR 연산: 루프 내부에서 데이터와 상수를 XOR(^) 한다.
// 전형적인 XOR 복호화 루틴
byte *data = get_data();
for (int i = 0; i < len; i++) {
    data[i] = data[i] ^ 0x5A; // 0x5A가 Key 역할을 수행
}

3. 대응 방법

분석을 통해 암호화 키(0x5A)와 알고리즘을 파악했다면, 이를 그대로 재현하여 데이터를 복구할 수 있다. 손으로 계산하는 것은 비효율적이므로, 파이썬 스크립트 등을 이용해 복호화 도구를 작성하는 것이 일반적이다.

엔트로피(Entropy) 분석
어떤 데이터가 평문인지, 아니면 압축/암호화된 데이터인지 어떻게 구별할까? 이럴 때 섀넌 엔트로피(Shannon Entropy)를 측정한다.
일반적인 텍스트나 코드는 엔트로피가 낮지만, 암호화된 데이터는 무작위성이 높아 엔트로피 수치가 매우 높다(8.0에 근접). 분석 도구(ex: binwalk -E)를 사용해 파일 내 엔트로피가 급격히 높은 구간을 찾으면, 그곳이 암호화된 데이터가 저장된 위치일 확률이 높다.